Data inladen

Baits<-read.table(file = "~/GitHub/vespa_analyses/Input/Baits_useful.txt", header=TRUE, sep="\t", na.strings=c(""," ","NA"))

Flights_incomplete<-read.table(file = "~/GitHub/vespa_analyses/Input/Flights_incomplete.txt", header=TRUE, sep="\t", na.strings=c(""," ","NA"))

Nests<-read.table(file = "~/GitHub/vespa_analyses/Input/Nests_useful.txt", header=TRUE, sep="\t", na.strings=c(""," ","NA"))

Shortind_incomplete<-read.table(file = "~/GitHub/vespa_analyses/Input/Shortind_incomplete.txt", header=TRUE, sep="\t", na.strings=c(""," ","NA"))

Shortpot_incomplete<-read.table(file = "~/GitHub/vespa_analyses/Input/Shortpot_incomplete.txt", header=TRUE, sep="\t", na.strings=c(""," ","NA"))

Individuals<-read.table(file = "~/GitHub/vespa_analyses/Input/Individuals.txt", header=TRUE, sep="\t", na.strings=c(""," ","NA"))

-incomplete wil zeggen dat de weergegevens nog niet volledig zijn. Ik wacht hiervoor op het KMI.

Aanpassingen datasets

# Overbodige kolommen wegdoen, foutje in excel
Flights_incomplete<-Flights_incomplete[1:(length(Flights_incomplete)-2)]
Shortind_incomplete<-Shortind_incomplete[1:(length(Shortind_incomplete)-2)]
Shortpot_incomplete<-Shortpot_incomplete[1:(length(Shortpot_incomplete)-2)]

#Foerageersnelheid en vliegsnelheid (m/s) toevoegen aan tabel
Flights_incomplete$ForagingSpeed<-Flights_incomplete$Distance/(Flights_incomplete$Flighttime_min*60)
Shortind_incomplete$ForagingSpeed<-Shortind_incomplete$Distance/(Shortind_incomplete$Flighttime_min*60)
Shortpot_incomplete$ForagingSpeed<-Shortpot_incomplete$Distance/(Shortpot_incomplete$Flighttime_min*60)

Flights_incomplete$FlightSpeed<-Flights_incomplete$Distance*2/(Flights_incomplete$Flighttime_min*60)
Shortind_incomplete$FlightSpeed<-Shortind_incomplete$Distance*2/(Shortind_incomplete$Flighttime_min*60)
Shortpot_incomplete$FlightSpeed<-Shortpot_incomplete$Distance*2/(Shortpot_incomplete$Flighttime_min*60)


## Urbanisatiecirkels per vliegtijd toevoegen
Flights_incomplete<-merge(Flights_incomplete, Baits[, c("NestID", "BaitID", "Urbanisation25m", "Urbanisation50m", "Urbanisation100m")], by=c("NestID", "BaitID"), all=TRUE)
Shortind_incomplete<-merge(Shortind_incomplete, Baits[, c("NestID", "BaitID", "Urbanisation25m", "Urbanisation50m", "Urbanisation100m")], by=c("NestID", "BaitID"))
Shortpot_incomplete<-merge(Shortpot_incomplete, Baits[, c("NestID", "BaitID", "Urbanisation25m", "Urbanisation50m", "Urbanisation100m")], by=c("NestID", "BaitID"))

## Urbanisatietrajecten per vliegtijd toevoegen
Flights_incomplete<-merge(Flights_incomplete, Baits[, c("NestID", "BaitID", "Traject25m", "Traject50m", "Traject100m")], by=c("NestID", "BaitID"), all=TRUE)
Shortind_incomplete<-merge(Shortind_incomplete, Baits[, c("NestID", "BaitID", "Traject25m", "Traject50m", "Traject100m")], by=c("NestID", "BaitID"))
Shortpot_incomplete<-merge(Shortpot_incomplete, Baits[, c("NestID", "BaitID", "Traject25m", "Traject50m", "Traject100m")], by=c("NestID", "BaitID"))

## Gewicht individu per vliegtijd toevoegen
Flights_incomplete<-merge(Flights_incomplete, Individuals[, c("NestID", "BaitID","ColorInd", "Weight_ind")], by=c("NestID", "BaitID", "ColorInd"), all=TRUE)
Shortind_incomplete<-merge(Shortind_incomplete, Individuals[, c("NestID", "BaitID", "ColorInd", "Weight_ind")], by=c("NestID", "BaitID", "ColorInd"))
Shortpot_incomplete<-merge(Shortpot_incomplete, Individuals[, c("NestID", "BaitID", "ColorInd","Weight_ind")], by=c("NestID", "BaitID", "ColorInd"))

## Nesthoogte per vliegtijd toevoegen
Flights_incomplete<-merge(Flights_incomplete, Nests[, c("NestID", "Height")], by=c("NestID"), all=TRUE)
Shortind_incomplete<-merge(Shortind_incomplete, Nests[, c("NestID", "Height")], by=c("NestID"))
Shortpot_incomplete<-merge(Shortpot_incomplete, Nests[, c("NestID", "Height")], by=c("NestID"))

library(ggplot2)
library(ggpubr)

Volgende datasets zijn gecreëerd:

Voorstel: Voor het model: Flight time ~ Distance zou ik de dataset vliegtijden per individu nemen (en eventueel per wiekpot?) Omdat we hiermee de theoretische regel 1min=100m kunnen verifiëren. De imkers nemen hiervoor altijd kortste meting

Voor modellen met weerparameters, gewicht, urbanisatie: Hiervoor zou ik telkens de hele dataset gebruiken omdat elke meting van deze factoren afhangt.

Datapunten op 2km weglaten

Deze metingen zijn nogal onzeker omdat deze waarnemingen ook van een ander nest kunnen komen. Was op 2km afstand en in Melle zijn toch redelijk wat nesten gevonden. Kans dat het van een nest is dat niet gevonden werd is groot.

Als de website van Vespawatch in orde is kan ik kijken of er eventueel een nest in de buurt is gevonden.

Voorlopig gaan we verder met de dataset zonder de outliers in Melle

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
Flights2_incomplete<-Flights_incomplete %>%  filter(NestID!=1)
Shortind2_incomplete<-Shortind_incomplete %>%  filter(NestID!=1)
Shortpot2_incomplete<-Shortpot_incomplete %>%  filter(NestID!=1)

Data exploratie

2) FlightSpeed vs Temperature

Graphs

Grafieken met outliers telkens voor de volgende datasets - volledige dataset - enkel kortste vliegtijden per individu - enkel kortste vliegtijden per wiekpot

Model Output

All data Hoogsignificant

model_temp_all<-lm(FlightSpeed ~ Temperature, na.action=na.exclude, data=Flights2_incomplete)
summary(model_temp_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Temperature, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8197 -0.7096 -0.2606  0.7950  3.4308 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.08514    0.31735  -3.419 0.000776 ***
## Temperature  0.19308    0.01673  11.543  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.173 on 181 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.424,  Adjusted R-squared:  0.4208 
## F-statistic: 133.2 on 1 and 181 DF,  p-value: < 2.2e-16

3) Flight time vs Distance + Temperature

Graph

With all data, outliers included

library(knitr)
library(kableExtra)
## Warning in !is.null(rmarkdown::metadata$output) && rmarkdown::metadata$output
## %in% : 'length(x) = 2 > 1' in coercion to 'logical(1)'
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library("plot3D")

x <- Flights2_incomplete$Distance
y <- Flights2_incomplete$Temperature
z <- Flights2_incomplete$Flighttime_min

fit <- lm(z ~ x + y, na.action=na.exclude)
x.pred <- seq(min(x[!is.na(x)]), max(x[!is.na(x)]), length.out = 20)
y.pred <- seq(min(y[!is.na(y)]), max(y[!is.na(y)]), length.out = 20)
xy <- expand.grid( x = x.pred, y = y.pred)
z.pred <- matrix(predict(fit, newdata = xy), 
                 nrow = 20, ncol = 20)
fitpoints <- predict(fit)

scatter3D(x, y, z, pch = 19, cex = 0.6, colvar=FALSE, col="dodgerblue3", theta = 210, phi = 10, bty="u", col.panel ="grey93", expand =0.4, col.grid = "white", xlab = "Distance", ylab = "Temperature", zlab = "Flight time", surf = list(x = x.pred, y = y.pred, z = z.pred,  
facets = TRUE, col=ramp.col(col = c("dodgerblue4", "seagreen2"), n = 100, alpha=0.8), fit = fitpoints, border="black"),main = "Flight time vs Distance + Temperature")

library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(tidyverse)
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ tibble  3.1.8     ✔ purrr   1.0.1
## ✔ tidyr   1.2.1     ✔ stringr 1.5.0
## ✔ readr   2.1.4     ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ plotly::filter()         masks dplyr::filter(), stats::filter()
## ✖ kableExtra::group_rows() masks dplyr::group_rows()
## ✖ dplyr::lag()             masks stats::lag()
FlightsNoNA<-Flights2_incomplete %>%  filter(Flighttime_min!="NA")
FlightsNoNA<-FlightsNoNA %>%  filter(Temperature!="NA")


fig <- plot_ly(FlightsNoNA, x = ~Distance, y = ~Temperature, z = ~Flighttime_min, size=1)
fig <- fig %>% add_markers()
fig <- fig %>% layout(scene = list(xaxis = list(title = 'Distance'),
                     yaxis = list(title = 'Temperature'),
                     zaxis = list(title = 'Flight time (min)')))


p2 <- add_trace(p = fig,
                z = z.pred,
                x = seq(2100, 0, by = -100),
                y = seq(0, 30, by = 10),
                type = "surface")
p2

Model Ouput

All data Distance en temperatuur hoogsignificant

model_tempdist_all<-lm(Flighttime_min ~ Distance + Temperature, na.action=na.exclude, data=Flights2_incomplete)
summary(model_tempdist_all)
## 
## Call:
## lm(formula = Flighttime_min ~ Distance + Temperature, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5147 -1.2599 -0.5980  0.6598 12.9039 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.3044798  0.6078392   8.727 1.74e-15 ***
## Distance     0.0074393  0.0008063   9.226  < 2e-16 ***
## Temperature -0.1929755  0.0356478  -5.413 1.96e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.216 on 180 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.3254, Adjusted R-squared:  0.3179 
## F-statistic: 43.41 on 2 and 180 DF,  p-value: 4.131e-16

4) FlightSpeed vs Height

Graphs

plot10<-ggplot(Flights2_incomplete, aes(x=Height, y=FlightSpeed)) + geom_point(color="burlywood3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="chocolate4") + ggtitle("All data")+ theme(plot.title = element_text(hjust = 0.5, size=10))

plot11<-ggplot(Shortind2_incomplete, aes(x=Height, y=FlightSpeed)) + geom_point(color="burlywood3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="chocolate4") + ggtitle("Shortest per ind.") + theme(plot.title = element_text(hjust = 0.5, size=10))

plot12<-ggplot(Shortpot2_incomplete, aes(x=Height, y=FlightSpeed)) + geom_point(color="burlywood3") + geom_smooth(method="lm", formula =y ~ x,  se=TRUE, fullrange=FALSE, level=0.95, color="chocolate4") + ggtitle("Shortest per jar")+ theme(plot.title = element_text(hjust = 0.5, size=10))

ggarrange(plot10, plot11, plot12 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)

Model Ouput

All data Hoogsignificant

model_height_all<-lm(FlightSpeed ~ Height, na.action=na.exclude, data=Flights2_incomplete)
summary(model_height_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Height, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7394 -1.1905 -0.1984  1.0376  8.3218 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.98208    0.22241   8.912  < 2e-16 ***
## Height       0.04264    0.01206   3.536 0.000495 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.508 on 221 degrees of freedom
##   (38 observations deleted due to missingness)
## Multiple R-squared:  0.05355,    Adjusted R-squared:  0.04926 
## F-statistic:  12.5 on 1 and 221 DF,  p-value: 0.0004949

5) Flight time vs Distance + Height

Graphs

Height = height of the nest

x <- Flights2_incomplete$Distance
y <- Flights2_incomplete$Height
z <- Flights2_incomplete$Flighttime_min

fit <- lm(z ~ x + y, na.action=na.exclude)
x.pred <- seq(min(x[!is.na(x)]), max(x[!is.na(x)]), length.out = 20)
y.pred <- seq(min(y[!is.na(y)]), max(y[!is.na(y)]), length.out = 20)
xy <- expand.grid( x = x.pred, y = y.pred)
z.pred <- matrix(predict(fit, newdata = xy), 
                 nrow = 20, ncol = 20)
fitpoints <- predict(fit)

scatter3D(x, y, z, pch = 19, cex = 0.6, colvar=FALSE, col="dodgerblue3", theta = 40, phi = 15, bty="u", col.panel ="grey93", expand =0.4, col.grid = "white", xlab = "Distance", ylab = "Height", zlab = "Flight time", surf = list(x = x.pred, y = y.pred, z = z.pred,  
facets = TRUE, col=ramp.col(col = c("dodgerblue4", "seagreen2"), n = 100, alpha=0.8), fit = fitpoints, border="black"),main = "Flight time vs Distance + Height")

Model Output

All data

model_distheight_all<-lm(Flighttime_min ~ Distance + Height , na.action=na.exclude, data=Flights2_incomplete)
summary(model_distheight_all)
## 
## Call:
## lm(formula = Flighttime_min ~ Distance + Height, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.8389 -1.2579 -0.7078  0.6378 13.6933 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.2142938  0.3686312   8.720 6.91e-16 ***
## Distance     0.0058864  0.0005858  10.048  < 2e-16 ***
## Height      -0.0634323  0.0183671  -3.454 0.000663 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.284 on 220 degrees of freedom
##   (38 observations deleted due to missingness)
## Multiple R-squared:  0.3267, Adjusted R-squared:  0.3206 
## F-statistic: 53.38 on 2 and 220 DF,  p-value: < 2.2e-16

Height effect blijkt toch significant. In de negatieve zin weliswaar. Hoe hoger het nest hoe minder lang hij erover doet. Zou het omgekeerde verwachten..

Voorstel: Model volgens Pythagoras? Hoogsignificant

model_distheight2_all<-lm(Flighttime_min ~ sqrt(I(Distance^2) + I(Height^2)) , na.action=na.exclude, data=Flights2_incomplete)
summary(model_distheight2_all)
## 
## Call:
## lm(formula = Flighttime_min ~ sqrt(I(Distance^2) + I(Height^2)), 
##     data = Flights2_incomplete, na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7477 -1.2641 -0.7849  0.3824 13.8647 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       2.2285116  0.2429953   9.171   <2e-16 ***
## sqrt(I(Distance^2) + I(Height^2)) 0.0056853  0.0005979   9.508   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.339 on 221 degrees of freedom
##   (38 observations deleted due to missingness)
## Multiple R-squared:  0.2903, Adjusted R-squared:  0.2871 
## F-statistic: 90.41 on 1 and 221 DF,  p-value: < 2.2e-16

6) FlightSpeed vs Cloudcoverage

Graphs

plot13<-ggplot(Flights2_incomplete, aes(x=Cloudcoverage, y=FlightSpeed)) + geom_point(color="lightblue") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="darkblue") + ggtitle("All data")+ theme(plot.title = element_text(hjust = 0.5, size=10))

plot14<-ggplot(Shortind2_incomplete, aes(x=Cloudcoverage, y=FlightSpeed)) + geom_point(color="lightblue") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="darkblue") + ggtitle("Shortest per ind.") + theme(plot.title = element_text(hjust = 0.5, size=10))

plot15<-ggplot(Shortpot2_incomplete, aes(x=Cloudcoverage, y=FlightSpeed)) + geom_point(color="lightblue") + geom_smooth(method="lm", formula =y ~ x,  se=TRUE, fullrange=FALSE, level=0.95, color="darkblue") + ggtitle("Shortest per jar")+ theme(plot.title = element_text(hjust = 0.5, size=10))

ggarrange(plot13, plot14, plot15 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)

Model Ouput

All data Hoogsignificant

model_cloud_all<-lm(FlightSpeed ~ Cloudcoverage, na.action=na.exclude, data=Flights2_incomplete)
summary(model_cloud_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Cloudcoverage, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1845 -1.2324 -0.3021  1.1390  3.8835 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.5341     0.1966  12.888   <2e-16 ***
## Cloudcoverage  -0.5491     0.3208  -1.711   0.0891 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.491 on 150 degrees of freedom
##   (109 observations deleted due to missingness)
## Multiple R-squared:  0.01915,    Adjusted R-squared:  0.01261 
## F-statistic: 2.929 on 1 and 150 DF,  p-value: 0.08906

7) FlightSpeed vs Weight individual

Graphs

plot16<-ggplot(Flights2_incomplete, aes(x=Weight_ind, y=FlightSpeed)) + geom_point(color="plum") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="darkorchid4") + ggtitle("All data")+ theme(plot.title = element_text(hjust = 0.5, size=10))

plot17<-ggplot(Shortind2_incomplete, aes(x=Weight_ind, y=FlightSpeed)) + geom_point(color="plum") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="darkorchid4") + ggtitle("Shortest per ind.") + theme(plot.title = element_text(hjust = 0.5, size=10))

plot18<-ggplot(Shortpot2_incomplete, aes(x=Weight_ind, y=FlightSpeed)) + geom_point(color="plum") + geom_smooth(method="lm", formula =y ~ x,  se=TRUE, fullrange=FALSE, level=0.95, color="darkorchid4") + ggtitle("Shortest per jar")+ theme(plot.title = element_text(hjust = 0.5, size=10))

ggarrange(plot16, plot17, plot18 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)

Model Output

All data Niet significant

model_weight_all<-lm(FlightSpeed ~ Weight_ind, na.action=na.exclude, data=Flights2_incomplete)
summary(model_weight_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Weight_ind, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8995 -0.9467 -0.2375  1.0092  2.5308 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   2.5517     0.5969   4.275 4.88e-05 ***
## Weight_ind   -1.0014     1.7162  -0.583    0.561    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.117 on 87 degrees of freedom
##   (172 observations deleted due to missingness)
## Multiple R-squared:  0.003898,   Adjusted R-squared:  -0.007551 
## F-statistic: 0.3405 on 1 and 87 DF,  p-value: 0.5611

8.1) FlightSpeed vs Windspeed

Graphs

Telkens voor de modellen FlightSpeed ~ Windspeed en F ~ Windspeed²

plot19<-ggplot(Flights2_incomplete, aes(x=Windspeed, y=FlightSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("All data")+ theme(plot.title = element_text(hjust = 0.5, size=10))

plot20<-ggplot(Shortind_incomplete, aes(x=Windspeed, y=FlightSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("Shortest per ind.") + theme(plot.title = element_text(hjust = 0.5, size=10))

plot21<-ggplot(Shortpot_incomplete, aes(x=Windspeed, y=FlightSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ x,  se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("Shortest per jar")+ theme(plot.title = element_text(hjust = 0.5, size=10))

plot22<-ggplot(Flights2_incomplete, aes(x=Windspeed, y=FlightSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ I(x^2), se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("All data")+ theme(plot.title = element_text(hjust = 0.5, size=10))

plot23<-ggplot(Shortind_incomplete, aes(x=Windspeed, y=FlightSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ I(x^2), se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("Shortest per ind.") + theme(plot.title = element_text(hjust = 0.5, size=10))

plot24<-ggplot(Shortpot_incomplete, aes(x=Windspeed, y=FlightSpeed)) + geom_point(color="khaki3") + geom_smooth(method="lm", formula =y ~ I(x^2),  se=TRUE, fullrange=FALSE, level=0.95, color="olivedrab") + ggtitle("Shortest per jar")+ theme(plot.title = element_text(hjust = 0.5, size=10))

ggarrange(plot19, plot20, plot21, plot22, plot23, plot24 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 3, nrow = 2)

Model Output

All data Beide modellen significant

model_wind_all<-lm(FlightSpeed ~ Windspeed, na.action=na.exclude, data=Flights2_incomplete)
summary(model_wind_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Windspeed, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -2.772 -1.127 -0.292  1.009  4.390 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.2272     0.2644  12.204  < 2e-16 ***
## Windspeed    -0.3667     0.1129  -3.249  0.00139 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.514 on 172 degrees of freedom
##   (87 observations deleted due to missingness)
## Multiple R-squared:  0.05783,    Adjusted R-squared:  0.05236 
## F-statistic: 10.56 on 1 and 172 DF,  p-value: 0.001392
model_wind2_all<-lm(FlightSpeed ~ I(Windspeed^2), na.action=na.exclude, data=Flights2_incomplete)
summary(model_wind2_all)
## 
## Call:
## lm(formula = FlightSpeed ~ I(Windspeed^2), data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4834 -1.1718 -0.2343  1.0190  4.3176 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.86827    0.17828  16.089  < 2e-16 ***
## I(Windspeed^2) -0.07563    0.02479  -3.051  0.00265 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.519 on 172 degrees of freedom
##   (87 observations deleted due to missingness)
## Multiple R-squared:  0.05133,    Adjusted R-squared:  0.04581 
## F-statistic: 9.306 on 1 and 172 DF,  p-value: 0.002646

8.2) FlightSpeed vs Windspeed | afhankelijk van de windrichting

Hiervoor werd telkens voor elke meting nagegaan of de hoornaar met meewind (tailwind), tegenwind (upwind) of loodrechte wind (perpendicular) te maken had. Dit volgens de formules:

|𝜃flight −𝜃wind| ≤ 45 is tailwind

45 < |𝜃flight −𝜃wind|<135 is (quasi) perpendicular

|𝜃 flight −𝜃wind| ≥135 upwind

Graphs

ggplot(data=subset(Flights2_incomplete, !is.na(Wind)), aes(x= Wind, col=Wind, y=FlightSpeed)) + geom_boxplot()
## Warning: Removed 6 rows containing non-finite values (`stat_boxplot()`).

ggplot(data=subset(Flights2_incomplete, !is.na(Wind)), aes(x= Windspeed, col=Wind, y=FlightSpeed)) + geom_point() + facet_grid(~Wind) + geom_smooth(method="lm", formula = y ~ I(x^2), se=TRUE, fullrange=FALSE, level=0.95)
## Warning: Removed 6 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 6 rows containing missing values (`geom_point()`).

Model Output

data_tailwind<-Flights2_incomplete %>%  filter(Wind!="tailwind")
data_perpendicular<-Flights2_incomplete %>%  filter(Wind!="perpendicular")
data_upwind<-Flights2_incomplete %>%  filter(Wind!="upwind")

model_tailwind<-lm(FlightSpeed ~ I(Windspeed^2), na.action=na.exclude, data=data_tailwind)
summary(model_tailwind)
## 
## Call:
## lm(formula = FlightSpeed ~ I(Windspeed^2), data = data_tailwind, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2414 -1.1136 -0.3614  0.9290  4.5141 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.62575    0.20359  12.897   <2e-16 ***
## I(Windspeed^2) -0.06413    0.02670  -2.401   0.0177 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.539 on 138 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.04011,    Adjusted R-squared:  0.03315 
## F-statistic: 5.766 on 1 and 138 DF,  p-value: 0.01767
model_perpendicular<-lm(FlightSpeed ~ I(Windspeed^2), na.action=na.exclude, data=data_perpendicular)
summary(model_perpendicular)
## 
## Call:
## lm(formula = FlightSpeed ~ I(Windspeed^2), data = data_perpendicular, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1745 -1.3644 -0.2466  1.1510  4.5741 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     2.22570    0.34457   6.459 2.89e-08 ***
## I(Windspeed^2)  0.02088    0.05736   0.364    0.717    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.679 on 55 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.002404,   Adjusted R-squared:  -0.01573 
## F-statistic: 0.1325 on 1 and 55 DF,  p-value: 0.7172
model_upwind<-lm(FlightSpeed ~ I(Windspeed^2), na.action=na.exclude, data=data_upwind)
summary(model_upwind)
## 
## Call:
## lm(formula = FlightSpeed ~ I(Windspeed^2), data = data_upwind, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6756 -1.1091 -0.1986  0.9393  3.5654 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     3.06119    0.19631  15.594  < 2e-16 ***
## I(Windspeed^2) -0.09290    0.02585  -3.594 0.000469 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.365 on 123 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.09504,    Adjusted R-squared:  0.08769 
## F-statistic: 12.92 on 1 and 123 DF,  p-value: 0.0004692

9) Flight error vs urbanisation (25m, 50m, 100m)

Flight error is the difference between the actual angle from the bait to the nest and the flight direction I measured.

Graphs

Urbanisatiecirkels

plot25<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Urbanisation25m, y=FlightError, fill=Observer)) + geom_point(aes(color=Observer))

plot26<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Urbanisation50m, y=FlightError, fill=Observer)) + geom_point(aes(color=Observer)) 

plot27<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Urbanisation100m, y=FlightError, fill=Observer)) + geom_point(aes(color=Observer))

ggarrange(plot25, plot26, plot27 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)
## Warning: Removed 9 rows containing missing values (`geom_point()`).
## Removed 9 rows containing missing values (`geom_point()`).
## Removed 9 rows containing missing values (`geom_point()`).

De foutmarge tussen mij en vrijwilligers lijkt evengroot TO DO: aanpassen

library(circular)
## 
## Attaching package: 'circular'
## The following object is masked from 'package:plotly':
## 
##     wind
## The following objects are masked from 'package:stats':
## 
##     sd, var
Errorcirc<-circular(Flights2_incomplete$FlightError, type=c("angles"), units=c("degrees"), rotation=c("clock"), zero=0)

lm.circular(Errorcirc, Flights2_incomplete$Urbanisation25m, type=c("c-l"), init=c(1))
## 
## Call:
## lm.circular.cl(y = ..1, x = ..2, init = ..3)
## 
## 
##  Circular-Linear Regression 
## 
##  Coefficients:
##      Estimate Std. Error t value Pr(>|t|)
## [1,]  0.02084    0.03946   0.528    0.299
## 
##  Log-Likelihood:  418.9 
## 
##  Summary: (mu in radians)
##   mu:  14.89 ( 1.043 )  kappa:  12.54 ( 1.093 )
## p-values are approximated using normal distribution

Moet ik 1 invullen bij init? “a vector with initial values of length equal to the columns of x”

lm.circular(Errorcirc, Flights2_incomplete$Urbanisation50m, type=c("c-l"), init=c(1))
## 
## Call:
## lm.circular.cl(y = ..1, x = ..2, init = ..3)
## 
## 
##  Circular-Linear Regression 
## 
##  Coefficients:
##      Estimate Std. Error t value Pr(>|t|)
## [1,]  0.03933    0.03923   1.002    0.158
## 
##  Log-Likelihood:  419 
## 
##  Summary: (mu in radians)
##   mu:  15.3 ( 1.042 )  kappa:  12.56 ( 1.094 )
## p-values are approximated using normal distribution

Niet significant

lm.circular(Errorcirc, Flights2_incomplete$Urbanisation100m, type=c("c-l"), init=c(1))
## 
## Call:
## lm.circular.cl(y = ..1, x = ..2, init = ..3)
## 
## 
##  Circular-Linear Regression 
## 
##  Coefficients:
##      Estimate Std. Error t value Pr(>|t|)    
## [1,]  0.14864    0.03812   3.899 4.82e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Log-Likelihood:  421.3 
## 
##  Summary: (mu in radians)
##   mu:  17.8 ( 1.033 )  kappa:  12.77 ( 1.113 )
## p-values are approximated using normal distribution

Significant

Urbanisatietrajecten

plot28<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Traject25m, y=FlightError)) + geom_point(col="hotpink1") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="violetred4")

plot29<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Traject50m, y=FlightError)) + geom_point(col="hotpink1") + geom_smooth(method="lm", formula =y ~ x , se=TRUE, fullrange=FALSE, level=0.95, color="violetred4")

plot30<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Traject100m, y=FlightError)) + geom_point(col="hotpink1")+ geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="violetred4")

ggarrange(plot28, plot29, plot30 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)
## Warning: Removed 9 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 9 rows containing missing values (`geom_point()`).
## Warning: Removed 9 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 9 rows containing missing values (`geom_point()`).
## Warning: Removed 9 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 9 rows containing missing values (`geom_point()`).

10) FlightSpeed vs Urbanisation

Graphs

Urbanisatiecirkels niet berekend, meteen trajecten genomen want die zijn betere maatstaf

Alle data

plot31<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Traject25m, y=FlightSpeed)) + geom_point(col="slateblue1") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="slateblue4")
               
plot32<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Traject50m, y=FlightSpeed)) + geom_point(col="slateblue1") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="slateblue4")

plot33<-ggplot(data=subset(Flights2_incomplete, !is.na(Observer)), aes(x=Traject100m, y=FlightSpeed)) + geom_point(col="slateblue1") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="slateblue4")

ggarrange(plot31, plot32, plot33 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)
## Warning: Removed 26 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 26 rows containing missing values (`geom_point()`).
## Warning: Removed 26 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 26 rows containing missing values (`geom_point()`).
## Warning: Removed 26 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 26 rows containing missing values (`geom_point()`).

Shortest per individual

plot34<-ggplot(data=subset(Shortind_incomplete, !is.na(Observer)), aes(x=Traject25m, y=FlightSpeed)) + geom_point(col="lemonchiffon3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="lemonchiffon4")
               
plot35<-ggplot(data=subset(Shortind_incomplete, !is.na(Observer)), aes(x=Traject50m, y=FlightSpeed)) + geom_point(col="lemonchiffon3") +
geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="lemonchiffon4")

plot36<-ggplot(data=subset(Shortind_incomplete, !is.na(Observer)), aes(x=Traject100m, y=FlightSpeed)) + geom_point(col="lemonchiffon3") + geom_smooth(method="lm", formula =y ~ x, se=TRUE, fullrange=FALSE, level=0.95, color="lemonchiffon4")

ggarrange(plot34, plot35, plot36 + rremove("x.text"), 
          labels = c("A", "B", "C"),
          ncol = 2, nrow = 2)

Model Output

All data

model_urb25_all<-lm(FlightSpeed ~ Traject25m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_urb25_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Traject25m, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4703 -0.7871 -0.0828  0.7738  6.6260 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.6910     0.1379   26.76   <2e-16 ***
## Traject25m   -5.5106     0.5340  -10.32   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.318 on 233 degrees of freedom
##   (26 observations deleted due to missingness)
## Multiple R-squared:  0.3137, Adjusted R-squared:  0.3107 
## F-statistic: 106.5 on 1 and 233 DF,  p-value: < 2.2e-16
model_urb50_all<-lm(FlightSpeed ~ Traject50m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_urb50_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Traject50m, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0798 -0.7869 -0.0795  0.8003  6.5421 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.8511     0.1420   27.12   <2e-16 ***
## Traject50m   -6.1889     0.5569  -11.11   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.286 on 233 degrees of freedom
##   (26 observations deleted due to missingness)
## Multiple R-squared:  0.3464, Adjusted R-squared:  0.3436 
## F-statistic: 123.5 on 1 and 233 DF,  p-value: < 2.2e-16
model_urb100_all<-lm(FlightSpeed ~ Traject100m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_urb100_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Traject100m, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9544 -0.8053 -0.1753  0.8174  6.4851 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.9952     0.1497   26.69   <2e-16 ***
## Traject100m  -6.5645     0.5765  -11.39   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.275 on 233 degrees of freedom
##   (26 observations deleted due to missingness)
## Multiple R-squared:  0.3575, Adjusted R-squared:  0.3548 
## F-statistic: 129.7 on 1 and 233 DF,  p-value: < 2.2e-16

Shortest per individual

model_urb25_ind<-lm(FlightSpeed ~ Traject25m, na.action=na.exclude, data=Shortind_incomplete)
summary(model_urb25_ind)
## 
## Call:
## lm(formula = FlightSpeed ~ Traject25m, data = Shortind_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8480 -0.9978  0.0167  0.7126  6.2478 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.0691     0.2213  18.383   <2e-16 ***
## Traject25m   -4.3231     1.2337  -3.504    7e-04 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.549 on 95 degrees of freedom
## Multiple R-squared:  0.1145, Adjusted R-squared:  0.1051 
## F-statistic: 12.28 on 1 and 95 DF,  p-value: 0.0007002
model_urb50_ind<-lm(FlightSpeed ~ Traject50m, na.action=na.exclude, data=Shortind_incomplete)
summary(model_urb50_ind)
## 
## Call:
## lm(formula = FlightSpeed ~ Traject50m, data = Shortind_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5064 -0.9661 -0.0851  0.6831  6.1960 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.1832     0.2272  18.415  < 2e-16 ***
## Traject50m   -5.0598     1.2748  -3.969  0.00014 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.524 on 95 degrees of freedom
## Multiple R-squared:  0.1422, Adjusted R-squared:  0.1332 
## F-statistic: 15.75 on 1 and 95 DF,  p-value: 0.0001401
model_urb100_ind<-lm(FlightSpeed ~ Traject100m, na.action=na.exclude, data=Shortind_incomplete)
summary(model_urb100_ind)
## 
## Call:
## lm(formula = FlightSpeed ~ Traject100m, data = Shortind_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3694 -0.9967 -0.0850  0.7380  6.2148 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.2295     0.2358  17.933  < 2e-16 ***
## Traject100m  -5.1207     1.2901  -3.969  0.00014 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.524 on 95 degrees of freedom
## Multiple R-squared:  0.1422, Adjusted R-squared:  0.1332 
## F-statistic: 15.75 on 1 and 95 DF,  p-value: 0.0001401

10) Flight time vs Distance + Temperatuur + Urbanisation

Aangezien temperatuur en urbanisatie de beste predictoren zijn kunnen we ze eens samen in een model steken.

model_1_all<-lm(Flighttime_min ~ Distance + Temperature + Traject25m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_1_all)
## 
## Call:
## lm(formula = Flighttime_min ~ Distance + Temperature + Traject25m, 
##     data = Flights2_incomplete, na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7415 -1.3111 -0.5105  0.5017 12.5249 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.9916125  1.2487100   2.396   0.0176 *  
## Distance     0.0078430  0.0008212   9.551   <2e-16 ***
## Temperature -0.1173656  0.0502568  -2.335   0.0206 *  
## Traject25m   3.4806550  1.6463427   2.114   0.0359 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.195 on 179 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.3418, Adjusted R-squared:  0.3308 
## F-statistic: 30.98 on 3 and 179 DF,  p-value: 3.503e-16
model_2_all<-lm(Flighttime_min ~ Distance + Temperature + Traject50m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_2_all)
## 
## Call:
## lm(formula = Flighttime_min ~ Distance + Temperature + Traject50m, 
##     data = Flights2_incomplete, na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7375 -1.2690 -0.4608  0.5211 12.5302 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.9492099  1.2751688   2.313   0.0219 *  
## Distance     0.0079177  0.0008308   9.530   <2e-16 ***
## Temperature -0.1194855  0.0497726  -2.401   0.0174 *  
## Traject50m   3.7170316  1.7739000   2.095   0.0375 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.196 on 179 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.3415, Adjusted R-squared:  0.3305 
## F-statistic: 30.95 on 3 and 179 DF,  p-value: 3.64e-16
model_3_all<-lm(Flighttime_min ~ Distance + Temperature + Traject100m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_3_all)
## 
## Call:
## lm(formula = Flighttime_min ~ Distance + Temperature + Traject100m, 
##     data = Flights2_incomplete, na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7762 -1.2493 -0.4212  0.5269 12.3149 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.030132   1.326741   1.530  0.12774    
## Distance     0.008189   0.000837   9.784  < 2e-16 ***
## Temperature -0.096866   0.049347  -1.963  0.05120 .  
## Traject100m  5.290052   1.914278   2.763  0.00632 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.177 on 179 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.353,  Adjusted R-squared:  0.3421 
## F-statistic: 32.55 on 3 and 179 DF,  p-value: < 2.2e-16

11) FlightSpeed vs Temperatuur + Urbanisation

model_4_all<-lm(FlightSpeed ~ Temperature + Traject25m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_4_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Temperature + Traject25m, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8161 -0.6685 -0.0619  0.6084  3.1989 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.13598    0.63594   1.786   0.0757 .  
## Temperature  0.11423    0.02551   4.477 1.34e-05 ***
## Traject25m  -3.27294    0.82221  -3.981 9.96e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.127 on 180 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.4706, Adjusted R-squared:  0.4647 
## F-statistic: 80.01 on 2 and 180 DF,  p-value: < 2.2e-16
model_5_all<-lm(FlightSpeed ~ Temperature + Traject50m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_5_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Temperature + Traject50m, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9005 -0.6330 -0.0565  0.6201  3.1846 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.49113    0.63681   2.342   0.0203 *  
## Temperature  0.10421    0.02503   4.163 4.86e-05 ***
## Traject50m  -3.96756    0.86416  -4.591 8.25e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.113 on 180 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.4844, Adjusted R-squared:  0.4787 
## F-statistic: 84.55 on 2 and 180 DF,  p-value: < 2.2e-16
model_6_all<-lm(FlightSpeed ~ Temperature + Traject100m, na.action=na.exclude, data=Flights2_incomplete)
summary(model_6_all)
## 
## Call:
## lm(formula = FlightSpeed ~ Temperature + Traject100m, data = Flights2_incomplete, 
##     na.action = na.exclude)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.94370 -0.63064 -0.09026  0.65454  3.11185 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.88673    0.65334   2.888 0.004355 ** 
## Temperature  0.09470    0.02483   3.814 0.000188 ***
## Traject100m -4.67106    0.91432  -5.109 8.22e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.099 on 180 degrees of freedom
##   (78 observations deleted due to missingness)
## Multiple R-squared:  0.497,  Adjusted R-squared:  0.4914 
## F-statistic: 88.91 on 2 and 180 DF,  p-value: < 2.2e-16

Varpart

library(vegan) varpart(Flights2_incomplete$Flighttime_min, ~Distance, ~Temperatuur, ~Windspeed, na.action=na.exclude, data= Flights2_incomplete) Probleem met NA

TO DO - circulaire statistiek verder uitwerken ?

Statistische modellen probeersels

# Model kiezen
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:purrr':
## 
##     some
## The following object is masked from 'package:dplyr':
## 
##     recode
library(carData)
library(leaps)
select1<-regsubsets(FlightSpeed ~ Temperature + Cloudcoverage + I(Windspeed^2) + Weight_ind + Traject100m, na.action=na.exclude, data=Flights2_incomplete, nbest=3)
summary(select1)
## Subset selection object
## Call: regsubsets.formula(FlightSpeed ~ Temperature + Cloudcoverage + 
##     I(Windspeed^2) + Weight_ind + Traject100m, na.action = na.exclude, 
##     data = Flights2_incomplete, nbest = 3)
## 5 Variables  (and intercept)
##                Forced in Forced out
## Temperature        FALSE      FALSE
## Cloudcoverage      FALSE      FALSE
## I(Windspeed^2)     FALSE      FALSE
## Weight_ind         FALSE      FALSE
## Traject100m        FALSE      FALSE
## 3 subsets of each size up to 5
## Selection Algorithm: exhaustive
##          Temperature Cloudcoverage I(Windspeed^2) Weight_ind Traject100m
## 1  ( 1 ) " "         " "           " "            " "        "*"        
## 1  ( 2 ) "*"         " "           " "            " "        " "        
## 1  ( 3 ) " "         " "           "*"            " "        " "        
## 2  ( 1 ) " "         "*"           " "            " "        "*"        
## 2  ( 2 ) "*"         "*"           " "            " "        " "        
## 2  ( 3 ) " "         " "           " "            "*"        "*"        
## 3  ( 1 ) "*"         "*"           " "            " "        "*"        
## 3  ( 2 ) " "         "*"           "*"            " "        "*"        
## 3  ( 3 ) " "         "*"           " "            "*"        "*"        
## 4  ( 1 ) "*"         "*"           " "            "*"        "*"        
## 4  ( 2 ) "*"         "*"           "*"            " "        "*"        
## 4  ( 3 ) " "         "*"           "*"            "*"        "*"        
## 5  ( 1 ) "*"         "*"           "*"            "*"        "*"
plot(select1, scale="adjr2")

select2<-regsubsets(FlightSpeed ~ Temperature + Cloudcoverage + Windspeed + Weight_ind + Traject100m +
Traject100m*Temperature + Traject100m*Cloudcoverage + Traject100m*Windspeed + Traject100m*Weight_ind + Temperature*Cloudcoverage + Temperature*Windspeed + Temperature*Weight_ind + Cloudcoverage*Windspeed + Cloudcoverage*Weight_ind + Windspeed*Weight_ind, na.action=na.exclude, data=Flights2_incomplete, nbest=3)
summary(select2)
## Subset selection object
## Call: regsubsets.formula(FlightSpeed ~ Temperature + Cloudcoverage + 
##     Windspeed + Weight_ind + Traject100m + Traject100m * Temperature + 
##     Traject100m * Cloudcoverage + Traject100m * Windspeed + Traject100m * 
##     Weight_ind + Temperature * Cloudcoverage + Temperature * 
##     Windspeed + Temperature * Weight_ind + Cloudcoverage * Windspeed + 
##     Cloudcoverage * Weight_ind + Windspeed * Weight_ind, na.action = na.exclude, 
##     data = Flights2_incomplete, nbest = 3)
## 15 Variables  (and intercept)
##                           Forced in Forced out
## Temperature                   FALSE      FALSE
## Cloudcoverage                 FALSE      FALSE
## Windspeed                     FALSE      FALSE
## Weight_ind                    FALSE      FALSE
## Traject100m                   FALSE      FALSE
## Temperature:Traject100m       FALSE      FALSE
## Cloudcoverage:Traject100m     FALSE      FALSE
## Windspeed:Traject100m         FALSE      FALSE
## Weight_ind:Traject100m        FALSE      FALSE
## Temperature:Cloudcoverage     FALSE      FALSE
## Temperature:Windspeed         FALSE      FALSE
## Temperature:Weight_ind        FALSE      FALSE
## Cloudcoverage:Windspeed       FALSE      FALSE
## Cloudcoverage:Weight_ind      FALSE      FALSE
## Windspeed:Weight_ind          FALSE      FALSE
## 3 subsets of each size up to 8
## Selection Algorithm: exhaustive
##          Temperature Cloudcoverage Windspeed Weight_ind Traject100m
## 1  ( 1 ) " "         " "           " "       " "        "*"        
## 1  ( 2 ) " "         " "           " "       " "        " "        
## 1  ( 3 ) "*"         " "           " "       " "        " "        
## 2  ( 1 ) " "         " "           " "       " "        "*"        
## 2  ( 2 ) " "         "*"           " "       " "        "*"        
## 2  ( 3 ) " "         " "           " "       " "        "*"        
## 3  ( 1 ) " "         " "           " "       " "        "*"        
## 3  ( 2 ) " "         " "           " "       " "        "*"        
## 3  ( 3 ) " "         " "           " "       " "        "*"        
## 4  ( 1 ) " "         " "           "*"       " "        "*"        
## 4  ( 2 ) " "         " "           "*"       " "        "*"        
## 4  ( 3 ) " "         "*"           "*"       " "        "*"        
## 5  ( 1 ) " "         " "           " "       " "        "*"        
## 5  ( 2 ) "*"         " "           " "       " "        "*"        
## 5  ( 3 ) " "         " "           " "       " "        "*"        
## 6  ( 1 ) " "         " "           " "       " "        "*"        
## 6  ( 2 ) " "         " "           " "       " "        "*"        
## 6  ( 3 ) " "         " "           " "       "*"        "*"        
## 7  ( 1 ) " "         "*"           " "       " "        "*"        
## 7  ( 2 ) " "         "*"           " "       " "        "*"        
## 7  ( 3 ) " "         "*"           " "       " "        "*"        
## 8  ( 1 ) "*"         " "           "*"       "*"        " "        
## 8  ( 2 ) " "         "*"           " "       " "        "*"        
## 8  ( 3 ) " "         "*"           " "       " "        "*"        
##          Temperature:Traject100m Cloudcoverage:Traject100m
## 1  ( 1 ) " "                     " "                      
## 1  ( 2 ) " "                     " "                      
## 1  ( 3 ) " "                     " "                      
## 2  ( 1 ) " "                     " "                      
## 2  ( 2 ) " "                     " "                      
## 2  ( 3 ) " "                     " "                      
## 3  ( 1 ) " "                     " "                      
## 3  ( 2 ) " "                     " "                      
## 3  ( 3 ) " "                     " "                      
## 4  ( 1 ) " "                     " "                      
## 4  ( 2 ) " "                     " "                      
## 4  ( 3 ) " "                     " "                      
## 5  ( 1 ) "*"                     " "                      
## 5  ( 2 ) " "                     " "                      
## 5  ( 3 ) "*"                     " "                      
## 6  ( 1 ) "*"                     " "                      
## 6  ( 2 ) "*"                     " "                      
## 6  ( 3 ) "*"                     " "                      
## 7  ( 1 ) "*"                     "*"                      
## 7  ( 2 ) "*"                     " "                      
## 7  ( 3 ) " "                     " "                      
## 8  ( 1 ) " "                     " "                      
## 8  ( 2 ) "*"                     "*"                      
## 8  ( 3 ) " "                     " "                      
##          Windspeed:Traject100m Weight_ind:Traject100m Temperature:Cloudcoverage
## 1  ( 1 ) " "                   " "                    " "                      
## 1  ( 2 ) " "                   "*"                    " "                      
## 1  ( 3 ) " "                   " "                    " "                      
## 2  ( 1 ) " "                   " "                    "*"                      
## 2  ( 2 ) " "                   " "                    " "                      
## 2  ( 3 ) " "                   " "                    " "                      
## 3  ( 1 ) " "                   " "                    "*"                      
## 3  ( 2 ) " "                   " "                    "*"                      
## 3  ( 3 ) " "                   " "                    " "                      
## 4  ( 1 ) "*"                   " "                    " "                      
## 4  ( 2 ) "*"                   " "                    "*"                      
## 4  ( 3 ) "*"                   " "                    " "                      
## 5  ( 1 ) "*"                   " "                    "*"                      
## 5  ( 2 ) "*"                   " "                    "*"                      
## 5  ( 3 ) "*"                   " "                    " "                      
## 6  ( 1 ) "*"                   " "                    "*"                      
## 6  ( 2 ) "*"                   " "                    "*"                      
## 6  ( 3 ) "*"                   " "                    "*"                      
## 7  ( 1 ) "*"                   " "                    "*"                      
## 7  ( 2 ) "*"                   " "                    "*"                      
## 7  ( 3 ) "*"                   "*"                    "*"                      
## 8  ( 1 ) " "                   "*"                    "*"                      
## 8  ( 2 ) "*"                   " "                    "*"                      
## 8  ( 3 ) "*"                   "*"                    "*"                      
##          Temperature:Windspeed Temperature:Weight_ind Cloudcoverage:Windspeed
## 1  ( 1 ) " "                   " "                    " "                    
## 1  ( 2 ) " "                   " "                    " "                    
## 1  ( 3 ) " "                   " "                    " "                    
## 2  ( 1 ) " "                   " "                    " "                    
## 2  ( 2 ) " "                   " "                    " "                    
## 2  ( 3 ) " "                   " "                    " "                    
## 3  ( 1 ) "*"                   " "                    " "                    
## 3  ( 2 ) " "                   " "                    "*"                    
## 3  ( 3 ) " "                   "*"                    " "                    
## 4  ( 1 ) " "                   " "                    " "                    
## 4  ( 2 ) " "                   " "                    " "                    
## 4  ( 3 ) " "                   " "                    " "                    
## 5  ( 1 ) "*"                   " "                    " "                    
## 5  ( 2 ) "*"                   " "                    " "                    
## 5  ( 3 ) "*"                   " "                    " "                    
## 6  ( 1 ) "*"                   " "                    "*"                    
## 6  ( 2 ) "*"                   "*"                    " "                    
## 6  ( 3 ) "*"                   " "                    " "                    
## 7  ( 1 ) "*"                   " "                    " "                    
## 7  ( 2 ) "*"                   " "                    "*"                    
## 7  ( 3 ) " "                   " "                    "*"                    
## 8  ( 1 ) "*"                   "*"                    " "                    
## 8  ( 2 ) "*"                   " "                    "*"                    
## 8  ( 3 ) "*"                   " "                    "*"                    
##          Cloudcoverage:Weight_ind Windspeed:Weight_ind
## 1  ( 1 ) " "                      " "                 
## 1  ( 2 ) " "                      " "                 
## 1  ( 3 ) " "                      " "                 
## 2  ( 1 ) " "                      " "                 
## 2  ( 2 ) " "                      " "                 
## 2  ( 3 ) "*"                      " "                 
## 3  ( 1 ) " "                      " "                 
## 3  ( 2 ) " "                      " "                 
## 3  ( 3 ) "*"                      " "                 
## 4  ( 1 ) "*"                      " "                 
## 4  ( 2 ) " "                      " "                 
## 4  ( 3 ) " "                      " "                 
## 5  ( 1 ) " "                      " "                 
## 5  ( 2 ) " "                      " "                 
## 5  ( 3 ) "*"                      " "                 
## 6  ( 1 ) " "                      " "                 
## 6  ( 2 ) " "                      " "                 
## 6  ( 3 ) " "                      " "                 
## 7  ( 1 ) " "                      " "                 
## 7  ( 2 ) " "                      " "                 
## 7  ( 3 ) " "                      "*"                 
## 8  ( 1 ) " "                      "*"                 
## 8  ( 2 ) " "                      " "                 
## 8  ( 3 ) " "                      "*"
plot(select2, scale="adjr2")

Multicollinearity check

library(ggcorrplot)
library(car)

datacor<-Flights2_incomplete[, c("Temperature", "Cloudcoverage", "Windspeed", "Weight_ind", "Traject100m")]
source("~/GitHub/vespa_analyses/Input/HighstatLibV10.R") 
corvif(datacor)
## 
## 
## Variance inflation factors
## 
##                   GVIF
## Temperature   6.054309
## Cloudcoverage 1.354508
## Windspeed     1.330242
## Weight_ind    1.441363
## Traject100m   6.708611
cormat <- round(cor(datacor, use = "pairwise.complete.obs"), 2)
ggcorrplot(cormat, lab= TRUE, type = "lower", ggtheme = ggplot2::theme_gray,
   colors = c("#6D9EC1", "white", "#E46726"))

plot(Temperature~Traject100m, data=Flights2_incomplete)

Eerder toeval dat Temperature en Traject100m gecorreleeerd zijn?

##PCA

library(vegan)
## Loading required package: permute
## Loading required package: lattice
## This is vegan 2.6-4
library(missMDA)
library(FactoMineR)
datapca<-select(Flights2_incomplete, Cloudcoverage, Windspeed, Temperature, Weight_ind, Traject100m)
nb <- estim_ncpPCA(datapca, scale = TRUE)
comp<-imputePCA(datapca, ncp=2)
res<-PCA(comp$completeObs)